const Router = require('koa-router')
const mongoose = require('mongoose')
const app = new Router()
const jwt = require('jsonwebtoken')

const secret = 'secret' // 令牌的盐
app.get('/', async (cxt, next) => {
  // 这里要加request 非常坑的 bodyParser只会在requset的这个上面加做body修改 不会同步到ctx里

  // 首先需判断验证码是否过期 过期时间设置为60s
  const phone = cxt.request.query.phone
  const authCode = cxt.request.query.authCode
  console.log(phone, authCode)
  if (+new Date() - cxt.session.time > 60000) {
    cxt.body = {
      code: 401,
      msg: '验证码失效'
    }
  } else {
    // 然后需判断验证码是否正确
    if (authCode === cxt.session.authCode) {
      // 第二步需判断该手机号数据库是否已有 若没有则注册 并登陆 若无则直接登陆
      const UserSchemaUnique = mongoose.model('bee')
      try {
        const user = await UserSchemaUnique.findOne({ phone }).exec()
        // 若用户不存在则创建用户
        if (!user) {
          try {
            //
            await UserSchemaUnique.create({ phone })
            const newUser = await UserSchemaUnique.findOne({ phone }).exec()
            console.log(newUser)
            // 无论是否是新用户最终都会执行登陆操作
            cxt.session.phone = phone // 将phone存入session里
            const token = jwt.sign({ phone }, secret,
              { expiresIn: '1h' } // 24小时过期
            )
            const userInfo = { ...newUser }
            delete userInfo.password
            cxt.body = {
              code: user ? 200 : 201,
              msg: user ? '用户登录成功' : '用户注册成功',
              token,
              userInfo
            }
            console.log('插入成功')
          } catch (err) {
            console.log(err)
            cxt.body = {
              code: 500,
              body: err,
              msg: '注册失败'
            }
          }
        } else {
          // 无论是否是新用户最终都会执行登陆操作
          cxt.session.phone = phone // 将phone存入session里
          const token = jwt.sign({ phone }, secret,
            { expiresIn: '1h' } // 24小时过期
          )
          const userInfo = { ...user }
          delete userInfo.password
          cxt.body = {
            code: user ? 200 : 201,
            msg: user ? '用户登录成功' : '用户注册成功',
            token,
            userInfo
          }
        }
      } catch (err) {
        console.log(err)
        cxt.body = {
          code: 500,
          msg: '服务端故障'
        }
      }
    } else {
      // 若不正确
      cxt.body = {
        code: 402,
        msg: '验证码不正确'
      }
    }
  }

//   const UserSchemaUnique = mongoose.model('moguuser')
//   await UserSchemaUnique.create(cxt.request.body).then(() => {
//     console.log('插入成功')
//     cxt.body = {
//       code: 200,
//       body: cxt.request.body,
//       msg: '注册成功'
//     }
//   }).catch((err) => {
//     console.log(err)
//     cxt.body = {
//       code: 500,
//       body: err,
//       msg: '注册失败'
//     }
//   })
//   console.log(cxt.request.body)
})

module.exports = app
